23

» WarCraft 3 / Два события в триггер

Похожие вопросы:

ответ
bladget, блин, посмотри как все делают, примеров 100500.
ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
Дебаг где? Шторм болт наносит урон трижды, сначала урон который указан в настройках способности, тут же еще 0.00 урона, и получая бафф, после окончания баффа еще раз 0.00 урона. Триггер нужно отключать, или действия делать в кондишене а в акшене удалять из триггера.
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка

23

» WarCraft 3 / Проблемы с интерфейсом!

Похожие вопросы:

ответ
Collision shapes или способ описанный Hexus'ом.
ответ
Ну в общем, я переустановил и лаги пропали, но хрен знает. Гарены у меня нет, вроде. Я ей точно не пользуюсь по крайней мере.
ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
Я такой же вопрос задавал месяца два назад.Надо ставить галочку фикс.параметры игрока во вкладке "свойства клана"
ответ

23

» WarCraft 3 / Проблема с игрой по сети

Похожие вопросы:

ответ
Они не прописаны в списке моделей для редактора... попробуй вручную изменять путь.
ответ
Viktor2, а ты реально импортировал все текстуры (в кол-ве 21шт ) в карту? Если хотя бы одну забыл -модель не будет отображаться.

23

» WarCraft 3 / Интерфейс и Warcraft3...

Похожие вопросы:

ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.

23

» WarCraft 3 / Как запустить карту?

Похожие вопросы:

ответ
В Warcraft не предусмотрена такая возможность. Если близарды выпустят патч, то возможно, всего вероятнее, по удаче она появится.
ответ
quq_CCCP:
pegas42rus, плз линк на карту, мб я тебя не правильно понял?
Обычно играется рандомная музкальная тема когда ты находишся на канале или в лобби.
Если там какая то спецефическая музка, прошу ссылку на карту.
Да ненад, я уже нашел что нужно, это через конфиги делается, в них до загрузки мапы можно воспроизводить любую музыку
ответ
Можно просто пикать всех юнитов в регионе, или ещё красивее
GetEnumRange('Лечилка')

23

» WarCraft 3 / Интерфейс и Warcraft3...

Похожие вопросы:

ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.

23

» WarCraft 3 / Нестандартная текстура земли

Похожие вопросы:

ответ
Ну насчет первых двух вопросов не знаю. Не супер-пупер картодел. Но с последним - скачай вот это: xgm.guru/p/wc3/jassnewgenpack-exp это расширенный редактор, там можно и карту гиганта сделать и текстур добавить больше чем возможно, по моему до 16 штук, да и еще много чего, включая выключение огранки на декор и т.д. Когда запустиш через эту програмку редактор - появиться в верху дополнительные кнопочки. Нажимаеш на Extensions и в менюшке - Edit Tileset. И выбирай до 16 любых текстур... Вплоть до полной замены всех текстур карты. ..
ответ
значит путь не так прописал или с текстурой что не то посмотри внимательней

23

» WarCraft 3 / Запрет способности?

Похожие вопросы:

ответ
короче пихаем сферу в спелбук и запрещаем его
у сферы безмолвие с настройками
ответ
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя
ответ
через триггер получилось вот так. через редактор объектов думаю никак
ответ
ClotPh, На каждую книжку чтоли? Ну это вообще неочень, может есть хорошее условие всё-таки?
Всё решил проблему, поставил определение герой ли подбирающий юнит. Это тянет на наработку, моё решение на скрине.

23

» WarCraft 3 / Всплывающий текст

Похожие вопросы:

ответ
Ну речь же об обычном системном сообщении?
Игра - показать сообщение в течение времени - "текст" " в течение ХХХ секунд".
ответ
Можно собственный miscdata.txt закинуть в папку варика, а в нём найти строки с всплыванием дерева/золота и заставить их исчезать сразу.
ответ
создавать его надо не для игрока а для всех
для игрока надо устанавливать текст этого тексттага
тогда игрок будет его видеть а остальные нет
ответ
без мемхака - нет
ответ
Начал я писать свой пост со слов "тут все просто", а потом понял что на самом деле - нет. Грамотная система ресайклинга плавающих текстов требует(в моем исполнении) БД юнитов и динамическую установку соответствия плавающих текстов юнитам, за которыми они временно будут закрепляться(максимум отображается, кажется, 96 тексттагов, соответственно создавать больше не имеет смысла). Из-за этого самого динамического закрепления - реализовывать подобное - очень времязатратно и не стоит своих свеч(такая система дает очень много контроля над окружением, но и требует времени на создание в замен).
А суть такова, что тебе надо "просто" юзать одни и те же плавающие тексты, не создавая новых. Либо удалять предыдущие тексты возле юнита, учет которых все-равно потребует БД, но, в теории, будет работать без лишних усилий.

23

» WarCraft 3 / Карта мира

Похожие вопросы:

ответ
~8gabriel8:
Файл карты - это архив, где содержатся файлы с данными о ландшафте, тенях, юнитах, триггерах и прочего этой карты. Бегло посмотрел пустую карту и насколько понял, за ландшафт отвечают три самых больших файла: в одном содержится информация о текстурах тайлов, в другом о тенях на тайлах, в третьем либо о проходимости, либо о высотах ландшафта. Может быть ещё где-то хранится информация, но не суть. Файл с данными о тенях war3map.shd можно удалить, при сохранении редактор его создаст заново, а вот два других файла war3map.w3e и war3map.wpm нужно аккуратно увеличить, копируя данные внутри них. Только, как отметил Jack-of-shadow, есть лимит у редактора и игры. Не факт, что редактор вообще откроет, а потом сохранит такую большую карту. Если всё-таки хочешь попытаться, то качай:
  • Ladik's MPQ Editor xgm.guru/p/wc3/ladiks-mpq для открывания MPQ-архивов и карт;
  • Notepad++ notepad-plus-plus.org/download/v7.5.8.html для редактирования файлов, так как обычные текстовые редакторы могут не сохранить правильно все символы.
И тренируйся сперва сделать с помощью этого из карты 32х32 карту 64х64, как получится, можно из 256х256 попытаться сделать 512х512. Если с ней не будет проблем, то можно продолжать.
P. S. Stason888045:
У меня абсолютно нет никаких навыков даже в элементарном программировании, разобрать прогу или игру самому - не осилю ни за что.
А как триггеры делаешь? Как раз элементарное программирование.

23

» WarCraft 3 / Прокачка героя

Похожие вопросы:

ответ
SomeFire, Suite,
Всё. Замутил.
Без всяких переменных, и для любого героя.
ответ
чтобы было вообще по своему вкусу отключаешь стандартное получение опыта и пишешь свою систему
в этом тебе помогут статьи
ответ
]]Chupakabra[[, я понял. Крч на костылях придется лепить. Попробуй при выборе героя добавлять геройские абилки, а потом блочить или удалять их. Думаю, так можно добавить до 7 штук. Через ро не получается больше 5.
Если не получится - пробуй делать полностью триггерно с помощью спеллбука.
ответ
есть способность - техника героя гоблина из melee карт, она позволяет производить замену одних способностей на другие
есть дамми юниты, которым можно выдавать пустышки-способности, ловим каст - считаем за изучение
еще можно реализовать на основе исследований, но тогда без возможности сброса талантов
после всего этого выдаем спеллбук с нужной абилкой, причем если ID спеллбуков буде одинаков, абилки будут там группироваться, или же просто повышаем лвл нужной абилки
профит

23

» WarCraft 3 / Инвентарь персонажа

Похожие вопросы:

ответ
дак можно же выключить нужный триггер на время замены, и сразу после неё включать
ответ
Если нужны только 2 типа атаки, то, может, подойдут способности сфер, которые включают атаку №2?
Тогда не нужно делать много типов юнитов.
ответ
Maniac_91, бред полный
NightCrawler, и получаем багоюз со стопом атаки (но всё остальное правильно)
надо юзать ддс
подробнее в статьях
а вообще походу кое кто копипастит зив
ответ
  1. прячем героя, вешаем дамми или эффект на цель
делаем проверку на нейтрала, если да - даем контроль и скилл для выхода
  1. при событии входа в регион делаем проверку на наличие предмета
если есть - делаем нужное действие

все необходимые действия и проверки есть в триггерах
если попытки действительно имели место - в студию

23

» WarCraft 3 / Как оптимизировать карту?

Похожие вопросы:

ответ
Roy Mustang:
ну у тебя там почти 1000 юнитов. конечно будет лагать, незнаю попробуй откл список кистей.
Окно - > Список кистей
ответ
XGM Bot:
Похожие вопросы:

ответ
Roy Mustang:
ну у тебя там почти 1000 юнитов. конечно будет лагать, незнаю попробуй откл список кистей.
Окно - > Список кистей
ответ
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка
Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
ответ
При конвертации моделей из игр в MDX их вес велик как и вес их текстур ! Я оптимизирую и сжимаю модель через MDLvis а текстуры через BLP Laboratory но их вес все еще внушителен ( Есть ли другие варианты среза веса без дефектов материала ?
Нет. Только удаление лишних анимаций. Остальную оптимизацию веса сделает mdlvis.
При импорте некоторых моделей в карту возникает проблема с их выбором при манипуляции ( Передвижения ) словно их Выбор отсутствует , Думаю некоторые с подобным сталкивались ...
Если модель нельзя выделить в игре курсором, у неё отсутствуют collision shapes (формы коллизии). Их можно добавить в War3ModelEditor -> Окна -> Редактор узлов -> правый клик -> Создать форму - > отредактировать размеры и положение. Их можно добавить несколько, чтобы покрыть модель целиком. Они отвечают за взаимодействие модели с курсором.

Один ресурс - один вопрос, после пойдут замечания.
ответ
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
ответ
в самой последней строке самой последней функции присваивай какое-то значение глобалке и будет тебе счастье знать, что всё закончилось успешно

ответ
call SaveInteger(udg_Hash,StringHash("x"),1,GetPlayerId(GetOwningPlayer(Caster)))

function Trig_R_Boom takes unit d, unit c returns nothing

call GroupEnumUnitsInRange(g, x, y,500,Condition(function FilterR))
loop
	set f = FirstOfGroup(g)
    exitwhen f == null
    call UnitDamageTarget(c,f,400, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
    call GroupRemoveUnit(g,f)
endloop

В конце функции Trig_R_Actions( )не обнулена переменная типа timer.
- Короче, вот:
function Trig_LOCAL_TimerR takes nothing returns nothing
    local  timer   timerer =  GetExpiredTimer( )
    local  integer i       =  GetHandleId( timerer )
    local  unit    Caster  =  LoadUnitHandle( udg_Hash, i, 4 )
    local  unit    Dummy   =  LoadUnitHandle( udg_Hash, i, 3 )
    local  real    xd      =  GetUnitX( Dummy )
    local  real    yd      =  GetUnitY( Dummy )
    local  group   g       =  null
    local  unit    f       =  null

    if ( GetWidgetLife( Dummy ) < 0.405 ) then

        set  g  =  CreateGroup( )

        call GroupEnumUnitsInRange( g, xd, yd, 500.0, null )
        loop
            set  f  =  FirstOfGroup( g )
            exitwhen ( f == null )
            call GroupRemoveUnit( g, f )

            if IsUnitEnemy( f, GetOwningPlayer( Caster ) ) and ( GetWidgetLife( f ) > 0.405 ) and ( not IsUnitType( f, UNIT_TYPE_STRUCTURE ) ) and ( not IsUnitType( f, UNIT_TYPE_FLYING ) ) then
                call UnitDamageTarget( Caster, f, 400.0, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null )
            endif

        endloop

        call DestroyGroup( g )
        set  g  =  null

        call FlushChildHashtable( udg_Hash, i )
        call DestroyTimer( timerer )
        set  Dummy  =  CreateUnit( GetOwningPlayer( Caster ), 'u001', xd, yd, 0.0 )
        call UnitApplyTimedLife( Dummy, 'BTLF', 2.0 )

    else
        set  xd = GetUnitX( Dummy ) + 10.0 * Cos( GetUnitFacing( Dummy ) * bj_DEGTORAD )
        set  yd = GetUnitY( Dummy ) + 10.0 * Sin( GetUnitFacing( Dummy ) * bj_DEGTORAD )
        call SetUnitPosition( Dummy, xd, yd )
    endif

    set  timerer  =  null
    set  Caster   =  null
    set  Dummy    =  null
endfunction


function Trig_R_Actions takes nothing returns nothing
    local  unit     Caster   =  GetTriggerUnit( )
    local  real     xt       =  GetSpellTargetX( )
    local  real     yt       =  GetSpellTargetY( )
    local  real     xc       =  GetUnitX( Caster )
    local  real     yc       =  GetUnitY( Caster )
    local  unit     Dummy    =  CreateUnit( GetOwningPlayer( Caster ), 'u000', xc, yc, bj_RADTODEG * Atan2( yt - yc, xt - xc ) )
    local  timer    timerer  =  CreateTimer( )
    local  integer  i        =  GetHandleId( timerer )

    call SetUnitAnimation( Dummy, "Birth" )
    call UnitApplyTimedLife( Dummy, 'BTLF', 1.0 )
    call SaveUnitHandle( udg_Hash, i, 3, Dummy )
    call SaveUnitHandle( udg_Hash, i, 4, Caster )
    call TimerStart( timerer, 0.01, true, function Trig_LOCAL_TimerR )

    set  Caster   =  null
    set  Dummy    =  null
    set  timerer  =  null
endfunction

23

» WarCraft 3 / Плавная камера и World Editor...

Похожие вопросы:

ответ
~8gabriel8:
Вот карта с двумя примерами:
Ещё камера может двигаться по высоте ландшафта и не перекрываясь многими игровыми объектами, что помешают виду. Это следующие два действия за тем, что во втором примере.

Ах да, скрин:

23

» WarCraft 3 / Jass тригеры

Похожие вопросы:

ответ
Это значит, что WE не смог обработать код. Следовательно, были допущены ошибки синтаксиса, опечатки или что-то в этом роде.
Чтобы "знатоки" могли сказать конкретнее, опубликуйте код.
+
И да, установите JNGP — в нём сообщения об ошибках корректные.
ответ
так как я неспособен понять такую гору ненужных строк советую раскрыть бж и хотя бы немного уменьшить количество кода,например:
function Trig_Kupol_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A013' ) ) then
return false
endif
return true
endfunction
заменить на
function Trig_Kupol_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A013' 
endfunction
судя по всему фатал вызывает то что функция function PC_action берёт юнита хотя должна быть
function PC_action takes nothing returns nothing
странно что редактор ошибку не выдал
джнгп используешь?
и запомни функции которые вызываются :
TriggerAddAction
ForGroup
и прочими должны быть takes nothing returns nothing
исключение: функции вызываемые из Condition которые должны takes nothing returns boolean
плохо читал статьи
или не все прочитал а только базовый курс 2005 года
ответ
Галочка
ответ
Starman2222, брали гуишный код и конвертили в джасс
узнав основы синтаксиса таким образом переходили к функциям
открывали комон и близард джи и изучали функции
ключевой вещью был мозг
без него ты даже 1 пункт не осилишь
теперь же есть статьи которые снижают время на изучение
но всё ещё требуют мозг
в общем если мозг есть то читай статьи
а если нету то займись чем нибудь полезным для общества
ответ
Загугли "Jass New Gen Pack Rebuild", вылезет ссылка на сайт xgm (то есть на этот сайт) с постом о нужном тебе редакторе.

23

» WarCraft 3 / Дамми

Похожие вопросы:

ответ
Создаешь две переменные - TempPoint (тип - точка), TempUnit (тип - боевая единица)
Событие - Приводит способность в действие
Условие - Применяемая способность = "Твоя способность"
Действия:
TempPoint = позиция применяющего юнита
TempUnit = Создать твоего дамми в TempPoint
Создать таймер смерти для TempUnit на 1.0 секунд
Заставить юнита выполнить приказ (тут уже сам разберешься)
Custom Script'ом вводишь код: call RemoveLocation(udg_TempPoint)
А вообще, если у тебя более-менее серьезный проект, то советую перейти на Джасс, ибо на ГУИ в картах ниже быстродействие из-за дополнительных вызовов через БЖ-функции, а также утечки, которые как ни крути не устранишь полностью. Да и сам Джасс гораздо удобнее и функциональнее
ответ
Я бы начал с проверки фильтров и условий выводом текстовых сообщений на экран, чтобы убедиться в том, что гребёт только одного.
Скорее всего не обновляется выбранный юнит во втором цикле, я по крайней мере не вижу ни массива, ни другого механизма передачи позиции следующего юнита.
ответ
~8gabriel8:
Когда просто запускаю твою карту, то всё нормально, но если внесу изменения и пересохраняю, даже просто пересохраняю, то она перестаёт загружаться в игре, может быть ты какую-то защиту ставил? Я планировал сделать видимой модель дамми, так как работник несёт ресурсы не в ратушу, а справа от неё, то есть предположительно дамми на свободном месте, но при этом работник ополченцем не становится. Да и вообще как-то глючно работает. Ратуша начальная не улучшается компьютером, только ратуши у новых рудников, работник может добывать дерево у нового рудника, но нести его к начальной базе, хотя только что перед этим носил на базу рядом с новым рудником. Короче, глючное какое-то поведение - надо бы видеть модель дамми.
P. S. Создал карту, куда скопировал дамми, дал ему видимую модель и начал проверять. Действительно не выполняется "К оружию", если юнит над Ратушей, но если ей дать меньшую карту путей, то способность срабатывает, немного другая карта путей, но того же размера у Обсерватории-она тоже не работает. Много всего перепробовал поменять в редакторе объектов, но никак не получалось сделать призыв работающим. Тогда я из блокираторов путей решил попробовать сделать рабочую карту путей, вот каким работающий вариант получился:
Для сравнения поместил рядом ратушу. Синий цвет у карты путей обозначает, что нельзя строить, розовый, что нельзя строить и ходить. Нам важен лишь розовый цвет. Опытным путём определил, что необходимо сделать не розовым второй квадратик в правом верхнем углу сверху, необязательно тот, что у меня отсутствует, можно и тот, который выделил. Можно и больше убрать, у меня показан необходимый минимум.
То есть надо сделать новую карту путей для Ратуши/Крепости/Замка. Новые карты путей я не делал, потому не подскажу более, но есть ссылка на статью:
ответ
call CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)
set dummy = bj_lastCreatedUnit
нативная CreateUnit не записывает юнита в bj_lastCreatedUnit, это делают только БЖ функции (вон там префикс bj_)
поменяй на
set dummy = CreateUnit(GetOwningPlayer(caster),'e000',kursor_x,kursor_y,0.00)

23

» WarCraft 3 / Wurst

Похожие вопросы:

ответ
  1. Никогда, честно говоря, не задумывался.
  2. Заботься о чистоте когда. Любой скриптовой язык пишется для удобства программиста, производительность это не главная вещь, о которой в нем нужно задумываться.
8gabriel8:
Что за visual code? Чтобы тестирование не запускалось в оконном режиме, убери отсюда галку:
Visual Studio Code
Wurst работает с кодом карты и РО из внешнего текстового редактора, на WE остается переключаться разве что ради ландшафта. Это к тому, что JNGP или SharpCraft с Wurst используются не часто.
ответ
Ответ нашёлся, табуляции не было...

23

» WarCraft 3 / Кампании на 1.30

Похожие вопросы:

ответ
RunXM:
Naadir:
А, та самая кампания! (что???)
Где обещанная ссылка?
Имя главного персонажа ни о чём не говорит, сюжет бы сюда вписался лучше.
Подправил, сойдет?
Нет, по-видимому, продолжения пока нет.

23

» WarCraft 3 / JASS создание и удаление эффекта

Похожие вопросы:

ответ
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.

23

» WarCraft 3 / Система стана

Похожие вопросы:

ответ
в моей карте лимит пищи 300, но всегда стоит "нет расходов"
я не совсем понимаю что тебе нужно
ответ
Steal nerves:
Тестил, тестил. Думал найду ошибку. Короче не знаю в чем дело, видимо и в правду баг. Решил по-другому. Ловить поставку, и ловить продажу. То есть ловить то, что пришло, и то, что ушло.
событием - "юнит закладывает в лавку" (EVENT_PLAYER_UNIT_PAWN_ITEM) ловим продажу итемов.
GetSellingUnit() =продающий торговец (типа всякие предметы закладывает в магазин и получает деньги)
GetBuyingUnit()=GetTriggerUnit() = покупающий торговец (это обычно магазин)

событием - "юнит закладывает из лавки (продает артефакт)" (EVENT_PLAYER_UNIT_SELL_ITEM) ловим покупку итемов
GetSellingUnit()=GetTriggerUnit()=продающий торговец (обычно это магазин)
GetBuyingUnit() = покупающий торговец (наш герой получает артефакты)
Решил, я по-своему. Короче, видимо, итем в магазине исчезает при добавлении. Попробовал запоминать все добавленные итемы, и при добавлении я сначала удалю всё в магазине, а потом заново добавлю. Пришлось, еще порядок (номер слотов) запоминать, а то строятся ключи хэша на строгом порядке. Если возьму и заберу итем посередине, придется заново выстраивать порядок.
Не знаю, пока тестил много времени, пока без косяков. Главное, что работает. Меня это радует. Но пока не буду спешить. Мне бы хотелось затестить норм.
ответ
Steal nerves:
ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется item being manipulated. А юнит, который получает итем - Triggering Unit. Вы можете с помощью этой переменной итема узнать тип, сравнить. Потом циклом пробегаете по слотам (от 1 до 6), тут вся суть в одной команде триггерной (item in slot X, итем в слоте Х) и проверяете есть ли такой же итем (не забываем делать проверки, на то что этот предмет не равен item being manipulated и сравниваете не одинаковые ли типы). Если есть такой же (находите тот же тип что и item being manipulated), то от item being manipulated берете заряды и прибавляете к зарядам существующего, а потом item being manipulated удаляете. Недостаток: при заполненном инвентаре такая штука не будет работать.Не хватает свободного места.
код
цикл А от 1 до 6
if тип итема (item being manipulated) РАВНО тип итема (item in slot А) and item being manipulated НЕ РАВНО item in slot А then проверяете
set k = Charges remaining in ( item being manipulated) + Charges remaining in ( item in slot А) складываете заряды
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
ответ
Нет.
ответ
посмотри как у урсы сделано
Там и скорость атаки (со счетчиком ударов) есть и алгоритм добавления зеленого урона

23

» WarCraft 3 / Проблема с JNGP

Похожие вопросы:

ответ
Меню RtC - убери галочку с enable.
ответ
Кириллицы в пути к JNGP или к карте нету?
ответ
Для какой программы ставишь запуск от админа? Нужно для worldeditor121.exe в папке с варкрафтом.
ответ
Steal nerves:
сложно сказать что это
попробуй это xgm.guru/p/wc3/178775 это руководство как пользоваться JNGP
если не поможет, то обратись к Ханабичи
ответ
В последней сборке JNPG:R pjass.exe очень странный, сам добавляет Condition() там, где их нет и пр.
Это легко исправить, скачай последний pjass.exe и замени оригинальный файл в папке jasshelper, которая в папке JNPG.
Есть ещё сборка R3 у меня, а также оригинальные JNPG, могу кинуть.

23

» WarCraft 3 / Как сменить анимацию Атаки?

Похожие вопросы:

ответ
Чтобы при подборе меча игрались анимации для меча - можно укзать
Анимация - add animation tag to unit - first например. Будут проигрываться attack first, walk first и т.д. При отсутствии таковых будут играться бестеговые анимации.
Теги не какие попало добавляются, насколько я помню.
Используемые теги: fast, victory, first, second,third, fourth, fifth, swim, ready, alternate.
ответ
Сфера + анимационный тег или морф?
ответ
gabriel_fisher, скорее всего, тебе нужны анимационные теги
теги бывают разные: alternate, gold, lumber, defend, flesh и др
например, у рабочего есть анимации attack, walk, death и если ему добавить тег lumber, тогда вместо этих анимаций будут проигрываться attack lumber, walk lumber и death lumber соответственно.
Теги можно добавлять/убирать тригерно
Анимация - Add/Remove Animation Tag
или с помощью jass
native AddUnitAnimationProperties takes unit whichUnit, string animProperties, boolean add returns nothing
Также теги можно добавлять в Редакторе Объектов
Графика - Нужная анимация

23

» WarCraft 3 / 2 вопроса на разные темы

Похожие вопросы:

ответ
  1. Думаю, что можно.
Берем основную модель, возможно, вообще без мяса, только с гусеницами, но с кучей точек крепления. Также берем кучу моделей-аттачметов, представляющих собой эти самые пушки, корпуса и все прочее. При выборе характеристик модели через диалог или интерфейс соответственно создаем на основной модели эффекты-аттачменты, будет собрана техника. Такие штуки, как двигатель и прочие невидные извне элементы будут скорее входить в математическую модель юнита, но это также можно запилить. Название танка - сразу не скажу, есть ли триггер на смену, но на таблице рекордов можно отобразить что угодно.

2.Тоже можно.
Создаем погодный в определенной местности и делаем два триггера для контроля входа-выхода юнитов из нее. На искомых юнитов применяем нужные способности - и все готово.

  1. Здесь чуть сложнее: нужно постоянно проверять тип местности под юнитом, но тоже можно. Проверка на ограждения тоже может бить сделана.

4.Это уже интереснее. Видел раньше подобное в играх. При каждой атаке юнита случайным образом наносим или не наносим доп. урон, эффект горения, кидаем спелл на цель в зависимости от теоретического места попадания атаки.

5.И это можно. Но нужно писать нестандартную систему Альянса. Но через триггеры и JASS все можно...

  1. Продажа техники - лучше через способность, что бы кидать ее на понравившегося юнита, не стоит покупать кота в мешке. Стоимость должна зависеть от технического уровня юнита, его текущего состояния (мертвый танк попадет вам бесплатно, сами чините!), если он был модернизован дополнительно, то это тоже входит в стоимость. Разрешение на продажу делаем аналогично.

  1. Это легко через Custom Value и переменние.

Как ты понял, все что ты предложил создать можно, но на это нужно потрать хороший кусок времени. Остается пожелать тебе удачи над созданием проекта - мне идея уже нравится.
ответ
старый запрос

23

» WarCraft 3 / Таймер

Похожие вопросы:

ответ
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
ответ
дык вы периодический таймер делайте, и каждые N секунд меняйте текст, пока не истечет время.
о том что время должно быть в переменной я надеюсь вы знаете
ответ
~8gabriel8:
Пока нет желания разбираться, что у тебя так, а что не так. Но вижу, что переменная Window не назначена окну, а ещё как бы создаются в цикле одновременно 10 окон, которые потом все одновременно ждут 50 секунд. Вот скрин действий триггера вместо двух твоих, секунда ожидания поставлена для того, чтобы увидеть пропадание окна таймера.
ответ
avuremybe, не обращай на него внимание
он сам не понимает что пишет
avuremybe, можешь впихнуть в карту счётчик утечек и проверить
или создать 100500 таймеров и посмотреть как изменился объём затраченной оперативы